home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 6
/
FM Towns Free Software Collection 6.iso
/
t_os
/
townsmsx
/
tif2scc.bas
< prev
next >
Wrap
BASIC Source File
|
1993-07-08
|
5KB
|
160 lines
1000 ' TIFF -> msx screen12 scc 変換
1010 ' (C) Copy RIGHT BY ちにゃと NIFTY-Serve GFH01000
1020 CLEAR ,,,300000
1030 STOP OFF
1040 DEFSNG R,G,B
1050 DEFINT M,T,S,Y,J,K,I
1060 DIM MSX(27139)
1070 DIM TIF(256*212)
1080 *メイン
1090 SCREEN@ 0:CLS
1100 ON ERROR GOTO 0
1110 GOSUB *FILE_SLCT
1120 GOSUB *FILE_LOAD
1130 GOSUB *ERIA_SLCT
1140 GOSUB *CONVERT
1150 GOSUB *SAVE
1170 *JMP
1180 PRINT "続けますか? (Y/N)"
1190 A$=INKEY$
1200 IF A$="y" OR A$="Y" THEN *メイン
1210 IF A$="N" OR A$="n" THEN END
1220 GOTO 1190
1230 *FILE_SLCT
1240 INPUT "ドライブは? (A,B,D,Q)";A$
1250 IF A$<>"A" AND A$<>"B" AND A$<>"D" AND A$<>"Q" AND A$<>"a" AND A$<>"b" AND A$<>"d" AND A$<>"q" THEN 1240
1260 IF A$="a" OR A$="A" THEN DRV$="A:"
1270 IF A$="B" OR A$="b" THEN DRV$="B:"
1280 IF A$="D" OR A$="d" THEN DRV$="D:"
1290 IF A$="Q" OR A$="q" THEN DRV$="Q:"
1300 DIR$="":INPUT "ディレクトリを指定しますか(Y/N)";A$
1310 IF A$="Y" OR A$="y" THEN 1332
1320 IF A$="N" OR A$="n" THEN 1390
1330 IF A$="" THEN 1390
1332 ON ERROR GOTO *ERROR6
1334 FILES DRV$+DIR$
1335 ON ERROR GOTO 0
1340 INPUT "ディレクトリを指定してください(終了はリターン)";DIRNEW$
1350 IF DIRNEW$="" THEN 1390
1360 IF LEFT$(DIRNEW$,1)<>"\" THEN 1340
1365 DIR$=DIR$+DIRNEW$
1384 INPUT "さらにディレクトリを指定しますか(Y/N)";A$
1385 IF A$="Y" OR A$="y" THEN 1332
1386 IF A$="N" OR A$="n" THEN 1390
1388 GOTO 1384
1390 IF RIGHT$(DIR$,1)<>"\" THEN DIR$=DIR$+"\"
1392 ON ERROR GOTO *エラートラップ
1395 PRINT DRV$+DIR$+"*.tif"
1400 PRINT "<*.tif>":FILES DRV$+DIR$+"*.tif"
1410 ON ERROR GOTO 0
1420 INPUT "ファイル名を入力してください";FIL$
1430 IF FIL$="" THEN RETURN *JMP
1440 DRVS$="":PRINT:INPUT "セーブするドライブを指定して下さい。 (A/B/D)";A$
1450 IF A$="" THEN RETURN
1460 IF A$="A" OR A$="a" THEN DRVS$="A:"
1470 IF A$="B" OR A$="b" THEN DRVS$="B:"
1480 IF A$="D" OR A$="d" THEN DRVS$="D:"
1490 FIL=INSTR(FIL$,".")
1500 FILS$=LEFT$(FIL$,FIL-1)
1510 ON ERROR GOTO *ERROR3
1512 PRINT DRVS$+FILS$+".scc"
1520 FILES DRVS$+FILS$+".scc"
1525 ON ERROR GOTO 0
1530 INPUT "同名のSCCファイルがあります。上書きしますか? (Y/N)";A$
1540 IF A$="Y" OR A$="y" THEN GOTO *DEL
1550 IF A$="n" OR A$="N" THEN RETURN *FILE_SLCT
1560 GOTO 1530
1570 RETURN
1580 *FILE_LOAD
1590 ON ERROR GOTO *エラートラップ2
1600 SCREEN@ 1,0
1605 PRINT DRV$+DIR$+FIL$
1610 LOAD@ DRV$+DIR$+FIL$
1620 ON ERROR GOTO 0
1630 RETURN
1640 *ERIA_SLCT
1650 X=0:Y=0
1660 *LINE_LOOP
1670 LINE (X,Y)-(X+255,Y+211),XOR,[255,255,255],B
1675 OX=X:OY=Y
1680 I$=INKEY$:IF I$="" THEN 1680
1690 IF I$=CHR$(&H1C) AND X<64 THEN X=X+1
1700 IF I$=CHR$(&H1D) AND X>0 THEN X=X-1
1710 IF I$=CHR$(&H1E) AND Y>0 THEN Y=Y-1
1720 IF I$=CHR$(&H1F) AND Y<28 THEN Y=Y+1
1730 IF I$=CHR$(&H0D) THEN *GET_TIF
1735 LINE (OX,OY)-(OX+255,OY+211),XOR,[255,255,255],B
1740 GOTO 1670
1750 *GET_TIF
1755 LINE (OX,OY)-(OX+255,OY+211),XOR,[255,255,255],B
1760 GET@A (X,Y)-(X+255,Y+211),TIF
1770 RETURN
1780 *CONVERT
1790 NX=256:NY=212
1800 FOR Y=0 TO NY-1
1820 FOR X=0 TO NX-1 STEP 4
1830 FOR I=0 TO 3
1840 TI=TIF(Y*NX+X+I)
1880 G(I)=TI \ 1024
1890 R(I)=(TI-G(I)*1024) \ 32
1900 B(I)=TI-G(I)*1024-R(I)*32
1905 Y(I)=INT((B(I)+1)/2)+INT((R(I)+1)/4)+INT((G(I)+1)/8)
1910 NEXT I
1920 G(4)=(G(0)+G(1)+G(2)+G(3)) \ 4
1922 R(4)=(R(0)+R(1)+R(2)+R(3)) \ 4
1923 B(4)=(B(0)+B(1)+B(2)+B(3)) \ 4
1925 YM=INT((B(4)+1)/2+(R(4)+1)/4+(G(4)+1)/8)
1950 JM=R(4)-YM:IF JM<0 THEN JM=64+JM
1960 KM=G(4)-YM:IF KM<0 THEN KM=64+KM
2120 II(0)=Y(0)*8+(KM AND &H7)
2130 II(1)=Y(1)*8+(KM \ 8)
2140 II(2)=Y(2)*8+(JM AND &H7)
2150 II(3)=Y(3)*8+(JM \ 8)
2160 AD&=VARPTR(MSX(X/2+3+Y*128))
2170 POKE AD&+1,II(0)
2180 POKE AD&+2,II(1)
2190 POKE AD&+3,II(2)
2200 POKE AD&+4,II(3)
2210 NEXT X
2220 NEXT Y
2240 RESTORE *DATA
2250 FOR I=0 TO 6
2260 READ A$
2270 POKE VARPTR(MSX(0))+I,VAL("&H"+A$)
2280 NEXT I
2290 RETURN
2300 *SAVE
2310 PRINT "コンバート終了しました。"
2320 *SAVEMAIN
2330 ON ERROR GOTO *ERROR4
2340 SAVE@ DRVS$+FILS$+".scc",MSX
2350 ON ERROR GOTO 0
2360 RETURN
2370 *ERROR3
2380 ON ERROR GOTO 0
2390 RESUME 1570
2400 *DEL
2410 ON ERROR GOTO 0:'*ERROR4
2420 KILL DRVS$+FILS$+".scc"
2430 ON ERROR GOTO 0
2440 RETURN
2450 *ERROR4
2460 PRINT "書き込めません。"
2470 RESUME *メイン
2480 *ERROR5
2490 PRINT "指定されたディレクトリがありません"
2500 RESUME 1340
2510 *ERROR6
2520 PRINT "ドライブの準備ができていません。"
2530 RESUME *FILE_SLCT
2610 *エラートラップ
2620 PRINT "ファイルがありません"
2630 RESUME *FILE_SLCT
2640 *エラートラップ2
2650 PRINT "ファイル名が間違っています。"
2660 RESUME *メイン
2680 *DATA
2690 ' SCC HEADER
2700 ' +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
2710 DATA FE,00,00,00,D4,00,00